}
-void show_handlers(u_char key, void *dev_id, struct pt_regs *regs)
+static void show_handlers(u_char key, void *dev_id, struct pt_regs *regs)
{
int i;
}
-void dump_registers(u_char key, void *dev_id, struct pt_regs *regs)
+static void dump_registers(u_char key, void *dev_id, struct pt_regs *regs)
{
extern void show_registers(struct pt_regs *regs);
return;
}
-void halt_machine(u_char key, void *dev_id, struct pt_regs *regs)
+static void halt_machine(u_char key, void *dev_id, struct pt_regs *regs)
{
printk("'%c' pressed -> rebooting machine\n", key);
machine_restart(NULL);
return;
}
+static void kill_dom0(u_char key, void *dev_id, struct pt_regs *regs)
+{
+ printk("'%c' pressed -> gracefully rebooting machine\n", key);
+ kill_other_domain(0, 0);
+ return;
+}
/* XXX SMH: this is keir's fault */
add_key_handler('p', perfc_printall, "print performance counters");
add_key_handler('P', perfc_reset, "reset performance counters");
add_key_handler('q', do_task_queues, "dump task queues + guest state");
+ add_key_handler('B', kill_dom0, "reboot machine gracefully");
add_key_handler('R', halt_machine, "reboot machine ungracefully");
return;
{
int loop, i;
xen_disk_info_t *xdi = map_domain_mem(virt_to_phys(raw_xdi));
+ unsigned long capacity = 0, device;
for ( loop = 0; loop < XEN_MAX_SEGMENTS; loop++ )
{
(xsegments[loop].domain != p->domain) )
continue;
- xdi->disks[xdi->count].device =
- MK_VIRTUAL_XENDEV(xsegments[loop].segment_number);
+ device = MK_VIRTUAL_XENDEV(xsegments[loop].segment_number);
for ( i = 0; i < xsegments[loop].num_extents; i++ )
- {
- xdi->disks[xdi->count].capacity +=
- xsegments[loop].extents[i].size;
- }
+ capacity += xsegments[loop].extents[i].size;
+
+ xdi->disks[xdi->count].device = device;
+ xdi->disks[xdi->count].capacity = capacity;
xdi->count++;
}
int loop;
unsigned int unit;
xen_disk_info_t *xen_xdi = map_domain_mem(virt_to_phys(xdi));
- unsigned long capacity;
+ unsigned long capacity, device;
ide_drive_t *drive;
for ( loop = 0; loop < MAX_HWIFS; loop++ )
drive = &hwif->drives[unit];
if ( !drive->present ) continue;
+ device = MK_IDE_XENDEV((loop * MAX_DRIVES) + unit);
capacity = current_capacity(drive);
- xen_xdi->disks[xen_xdi->count].device =
- MK_IDE_XENDEV((loop * MAX_DRIVES) + unit);
+
+ xen_xdi->disks[xen_xdi->count].device = device;
xen_xdi->disks[xen_xdi->count].capacity = capacity;
xen_xdi->count++;
Scsi_Disk *sd;
int i;
xen_disk_info_t *xen_xdi = map_domain_mem(virt_to_phys(xdi));
+ unsigned long capacity, device;
for ( sd = rscsi_disks, i = 0; i < sd_template.dev_max; i++, sd++ )
{
if ( sd->device == NULL ) continue;
- xen_xdi->disks[xen_xdi->count].device = MK_SCSI_XENDEV(i);
- xen_xdi->disks[xen_xdi->count].capacity = sd->capacity;
+ device = MK_SCSI_XENDEV(i);
+ capacity = sd->capacity;
+
+ xen_xdi->disks[xen_xdi->count].device = device;
+ xen_xdi->disks[xen_xdi->count].capacity = capacity;
xen_xdi->count++;
printk("Disk %d: SCSI-XENO capacity %dkB (%dMB)\n",
- xen_xdi->count, sd->capacity>>1, sd->capacity>>11);
+ xen_xdi->count, capacity>>1, capacity>>11);
}
unmap_domain_mem(xen_xdi);
blk_ring = (blk_ring_t *)fix_to_virt(FIX_BLKRING_BASE);
blk_ring->req_prod = blk_ring->resp_prod = resp_cons = req_prod = 0;
- error = request_irq(XLBLK_RESPONSE_IRQ, xlblk_response_int, 0,
- "xlblk-response", NULL);
+ error = request_irq(XLBLK_RESPONSE_IRQ, xlblk_response_int,
+ SA_SAMPLE_RANDOM, "xlblk-response", NULL);
if ( error )
{
printk(KERN_ALERT "Could not allocate receive interrupt\n");
network_alloc_rx_buffers(dev);
- error = request_irq(NET_RX_IRQ, network_rx_int, 0,
- "net-rx", dev);
+ error = request_irq(NET_RX_IRQ, network_rx_int,
+ SA_SAMPLE_RANDOM, "net-rx", dev);
if ( error )
{
printk(KERN_WARNING "%s: Could not allocate receive interrupt\n",
goto fail;
}
- error = request_irq(NET_TX_IRQ, network_tx_int, 0,
- "net-tx", dev);
+ error = request_irq(NET_TX_IRQ, network_tx_int,
+ SA_SAMPLE_RANDOM, "net-tx", dev);
if ( error )
{
printk(KERN_WARNING "%s: Could not allocate transmit interrupt\n",